home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
101-125
/
scopedisk122
/
bassub
/
hardcopy.sub
< prev
next >
Wrap
Text File
|
1995-03-19
|
5KB
|
178 lines
'Subroutines for doing graphic prints of a screen
'
SUB Hardcopy1(x%,y%,p.width%,p.height%,f1,f2,fl%) STATIC
mem.opt& = 2^0+2^16
p.io& = AllocMem&(100,mem.opt&)
p.port& = p.io&+62
IF p.io& = 0 THEN ERROR 7
f.windo& = WINDOW(7)
f.rastport& = PEEKL(f.windo&+50)
f.width% = PEEKW(f.windo&+112)
f.height% = PEEKW(f.windo&+114)
f.screen& = PEEKL(f.windo&+46)
f.viewport& = f.screen&+44
f.colormap& = PEEKL(f.viewport&+4)
f.vp.mode% = PEEKW(f.viewport&+32)
p.sigBit% = AllocSignal%(-1)
IF p.sigBit% = -1 THEN
CALL OneButtonRequest("No Signalbit free!","Aborting","Continue",which%)
CALL FreeMem(p.io&,100)
EXIT SUB
END IF
p.sigTask& = FindTask&(0)
POKE p.port&+8,4
POKEL p.port&+10,p.port&+34
POKE p.port&+15,p.sigBit%
POKEL p.port&+16,p.sigTask&
POKEL p.port&+20,p.port&+24
POKEL p.port&+28,p.port&+20
POKE p.port&+34,ASC("P")
POKE p.port&+35,ASC("R")
POKE p.port&+36,ASC("T")
CALL AddPort(p.port&)
POKE p.io&+8,5
POKEL p.io&+14,p.port&
POKEW p.io&+28,11
POKEL p.io&+32,f.rastport&
POKEL p.io&+36,f.colormap&
POKEL p.io&+40,f.vp.mode%
POKEW p.io&+44,x%
POKEW p.io&+46,y%
POKEW p.io&+48,p.width%
POKEW p.io&+50,p.height%
POKEL p.io&+52,f.width%*f1
POKEL p.io&+56,f.height%*f2
d.name$ = "printer.device"+CHR$(0)
status% = OpenDevice%(SADD(d.name$),0,p.io&,0)
IF status%<>0 THEN
CALL OneButtonRequest("Printer is not free.","Aborting","Continue",which%)
CALL FreeMem(p.io&,100)
CALL FreeSignal(p.sigBit%)
EXIT SUB
END IF
ercond% = DoIO%(p.io&)
IF ercond%=0 THEN
msg1$="Print Finished"
msg2$=""
ELSE
msg1$="Print Error"
msg2$="Code #"+STR$(ercond%)
END IF
CALL CloseDevice(p.io&)
CALL RemPort(p.port&)
CALL FreeMem(p.io&,100)
CALL FreeSignal(p.sigBit%)
CALL OneButtonRequest(msg1$,msg2$,"Continue",which%)
END SUB
SUB Hardcopy2(na$,x&,y&,p.width%,p.height%,f1,f2,fl%) STATIC
f.windo& = WINDOW(7)
f.reg& = PEEKL(f.windo&+66)
WHILE f.reg&>0
f.windo& = f.reg&
f.reg& = PEEKL(f.windo&+66)
WEND
finder:
f.title& = PEEKL(f.windo&+32)
check% = PEEK(f.title&+count%)
WHILE check%>0
check$ = check$+CHR$(check%)
count% = count%+1
check% = PEEK(f.title&+count%)
WEND
found$ = check$:check$="":count%=0
IF UCASE$(found$)<>UCASE$(na$) THEN
f.windo& = PEEKL(f.windo&+70)
IF f.windo&>0 THEN
GOTO finder
ELSE
CALL OneButtonRequest("Window does not exist!","Aborting","Continue",which%)
EXIT SUB
END IF
END IF
mem.opt& = 2^0+2^16
p.io& = AllocMem&(100,mem.opt&)
p.port& = p.io&+62
IF p.io& = 0 THEN ERROR 7
f.rastport& = PEEKL(f.windo&+50)
f.width% = PEEKW(f.windo&+112)
f.height% = PEEKW(f.windo&+114)
f.screen& = PEEKL(f.windo&+46)
f.viewport& = f.screen&+44
f.colormap& = PEEKL(f.viewport&+4)
f.vp.mode% = PEEKW(f.viewport&+32)
p.sigBit% = AllocSignal%(-1)
IF p.sigBit% = -1 THEN
CALL OneButtonRequest("No Signalbit free!","Aborting","Continue",which%)
CALL FreeMem(p.io&,100)
EXIT SUB
END IF
p.sigTask&=FindTask&(0)
POKE p.port&+8,4
POKEL p.port&+10,p.port&+34
POKE p.port&+15,p.sigBit%
POKEL p.port&+16,p.sigTask&
POKEL p.port&+20,p.port&+24
POKEL p.port&+28,p.port&+20
POKE p.port&+34,ASC("P")
POKE p.port&+35,ASC("R")
POKE p.port&+36,ASC("T")
CALL AddPort(p.port&)
POKE p.io&+8,5
POKEL p.io&+14,p.port&
POKEW p.io&+28,11
POKEL p.io&+32,f.rastport&
POKEL p.io&+36,f.colormap&
POKEL p.io&+40,f.vp.mode%
POKEW p.io&+44,x%
POKEW p.io&+46,y%
POKEW p.io&+48,p.width%
POKEW p.io&+50,p.height%
POKEL p.io&+52,f.width%*f1
POKEL p.io&+56,f.height%*f2
POKEW p.io&+60,fl%
d.name$ = "printer.device"+CHR$(0)
status% = OpenDevice%(SADD(d.name$),0,p.io&,0)
IF status%<>0 THEN
CALL OnebuttonRequest("Printer is not free.","Aborting","Continue",which%)
CALL FreeMem(p.io&,100)
CALL FreeSignal(p.sigBit%)
EXIT SUB
END IF
ercond% = DoIO%(p.io&)
IF ercond%=0 THEN
msg1$="Print Finished"
msg2$=""
ELSE
msg1$="Print Error"
msg2$="Code #"+STR$(ercond%)
END IF
CALL CloseDevice(p.io&)
CALL RemPort(p.port&)
CALL FreeMem(p.io&,100)
CALL FreeSignal(p.sigBit%)
CALL OneButtonRequest(msg1$,msg2$,"Continue",which%)
END SUB